import logging

import os
from logging.config import dictConfig

# python3 运行

# log目录必须手动建立，否则程序启动会报错
logging_config = dict(
    version=1,
    formatters={
        # f
        'ff': {
            'format': '%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s'
        },
        'f': {
            'format': '%(asctime)s %(levelname)-8s %(message)s'
        }
    },
    handlers={
        'console': {
            'class': 'logging.StreamHandler',
            'formatter': 'f',  # 使用自定义日志格式中 f
            'level': logging.DEBUG  # 打印到控制台 的日志格式
        },
        'file-info': {
            'class': 'logging.handlers.RotatingFileHandler',
            'formatter': 'f',
            'level': logging.INFO,
            'filename': os.path.join(os.path.dirname(__file__), 'log/test-info.log'),
            'maxBytes': 1024 * 1024 * 10,  # 日志大小限制为10m
            'backupCount': 10
        },
        'file': {
            'class': 'logging.handlers.RotatingFileHandler',
            'formatter': 'ff',
            'level': logging.ERROR,
            'filename': os.path.join(os.path.dirname(__file__), 'log/test-error.log'),
            'maxBytes': 1024 * 1024 * 10,
            'backupCount': 10
        }
    },
    root={
        'handlers': ['console', 'file', 'file-info'],  # 处理哪些日志
        'level': logging.DEBUG,  # log 输出级别
    },
)

dictConfig(logging_config)
logger = logging.getLogger('d2c-monitor')

# info级别的日志，包括error、info，所以info日志文件会存放error日志

if __name__ == '__main__':
    logger.info("info message")
    logger.error("error message")
    logger.info("info message2")

''' 源码中常量
_levelToName = {
    CRITICAL: 'CRITICAL',
    ERROR: 'ERROR',
    WARNING: 'WARNING',
    INFO: 'INFO',
    DEBUG: 'DEBUG',
    NOTSET: 'NOTSET',
}
_nameToLevel = {
    'CRITICAL': CRITICAL,
    'FATAL': FATAL,
    'ERROR': ERROR,
    'WARN': WARNING,
    'WARNING': WARNING,
    'INFO': INFO,
    'DEBUG': DEBUG,
    
'''
